[SYCL] fix for device global / device image dependency#21657
Open
cperkinsintel wants to merge 8 commits intointel:syclfrom
Open
[SYCL] fix for device global / device image dependency#21657cperkinsintel wants to merge 8 commits intointel:syclfrom
cperkinsintel wants to merge 8 commits intointel:syclfrom
Conversation
YuriPlyakhin
reviewed
Apr 3, 2026
Contributor
YuriPlyakhin
left a comment
There was a problem hiding this comment.
llvm/lib/SYCLPostLink/ComputeModuleRuntimeInfo.cpp LGTM
Few nits.
| continue; | ||
|
|
||
| // Check if it's a device_global by type name (declarations don't have | ||
| // attributes) |
Contributor
There was a problem hiding this comment.
nit
Suggested change
| // attributes) | |
| // attributes). |
YuriPlyakhin
approved these changes
Apr 3, 2026
Contributor
YuriPlyakhin
left a comment
There was a problem hiding this comment.
forgot to change to approve.
Contributor
|
in description: SCYL -> SYCL |
againull
reviewed
Apr 7, 2026
Comment on lines
+951
to
+960
| // Store the merged image to keep it alive. Use a static map since we need | ||
| // it to persist for the lifetime of the program. | ||
| static std::mutex MergedImagesMutex; | ||
| static std::map<ur_program_handle_t, | ||
| std::unique_ptr<DynRTDeviceBinaryImage>> | ||
| MergedImages; | ||
| { | ||
| std::lock_guard<std::mutex> Lock(MergedImagesMutex); | ||
| MergedImages[BuiltProgram] = std::move(MergedImg); | ||
| } |
Contributor
There was a problem hiding this comment.
I have several questions:
- Is it possible to reuse
NativePrograms/NativeProgramsMutexin program manager? It seems like it would be natural to store the following pair in that structure: [linked program handle, merged device image]. - I was wondering why only this structure has to be static local while we store all other structures (like
NativePrograms) in the program manager and cleanup accordingly inremoveImages. Probably we should do the same here or just reuseNativePrograms. - Currently you only insert into the map and never read, and key is unused. Please consider using unordered_set.
| @@ -0,0 +1,101 @@ | |||
| // This test verifies that device_global variables work correctly across | |||
Contributor
There was a problem hiding this comment.
Since you've mentioned driver version requirement in the PR description, should it be specified in the test using // REQUIRES-INTEL-DRIVER:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CMPLRLLVM-74325
The SCYL mechanism for handling device globals does not currently take into account image dependencies, instead it only handles the globals present in the main image. This PR fixes that. It requires newer drivers ( 37170 or later).
Seems to be working on L0 and the OpenCL CPU device, but, surprisingly, not the OCL:GPU device.